// 引入全局数据
const app = getApp();
const globalData = require('../../common/globalData');
const utils = require('../../common/utils');

Page({
    data: {
        userInfo: globalData.userInfo, // 用户信息
        userId: '',                    // 用户ID（模拟）
        todayPoints: 0,                // 今日获得K币
        monthPoints: 0,                // 本月获得K币
        monthCheckinCount: 0,          // 本月签到天数
        recentCheckinDays: []          // 最近7天签到状态
    },

    // 页面加载时初始化
    onLoad() {
        // 1. 生成模拟用户ID
        this.setData({ userId: `USER_${Math.floor(Math.random() * 1000000).toString().padStart(6, '0')}` });

        // 2. 计算今日/本月K币
        this.calculatePoints();

        // 3. 初始化签到记录
        this.initCheckinRecord();

        // 同步自定义TabBar选中态（个人主页是索引2）
        if (typeof this.getTabBar === 'function' && this.getTabBar()) {
            this.getTabBar().setData({ current: 2 });
        }
    },

    // 页面显示时刷新
    onShow() {
        this.setData({ userInfo: globalData.userInfo });
        this.calculatePoints();
        this.initCheckinRecord();
    },

    // 计算今日/本月K币
    calculatePoints() {
        const { taskList } = globalData;
        const today = new Date();
        const todayStr = utils.formatDate(today);
        const month = today.getMonth();

        // 1. 计算今日K币（签到5K币 + 今日完成任务K币）
        const checkInRecord = wx.getStorageSync('checkInRecord') || {};
        const checkInPoints = checkInRecord[todayStr] ? 5 : 0;
        const todayTaskPoints = taskList.reduce((total, task) => {
            // 简化：默认所有已完成任务都算今日K币，实际可根据任务“完成日期”筛选
            return task.status === '已完成' ? total + task.points : total;
        }, 0);
        const todayPoints = checkInPoints + todayTaskPoints;

        // 2. 计算本月K币（所有已完成任务K币 + 本月签到K币）
        const monthTaskPoints = taskList.reduce((total, task) => {
            // 简化：默认所有已完成任务都算本月K币
            return task.status === '已完成' ? total + task.points : total;
        }, 0);
        // 计算本月签到天数
        const monthCheckinCount = Object.keys(checkInRecord).filter(dateStr => {
            const date = new Date(dateStr);
            return date.getMonth() === month;
        }).length;
        const monthCheckinPoints = monthCheckinCount * 5;
        const monthPoints = monthTaskPoints + monthCheckinPoints;

        // 3. 更新全局总K币
        globalData.userInfo.totalPoints = monthPoints;

        // 4. 更新页面数据
        this.setData({
            todayPoints,
            monthPoints,
            monthCheckinCount,
            userInfo: globalData.userInfo
        });
    },

    // 初始化签到记录（最近7天）
    initCheckinRecord() {
        const checkInRecord = wx.getStorageSync('checkInRecord') || {};
        const recentDays = [];

        // 获取最近7天的日期
        for (let i = 6; i >= 0; i--) {
            const date = new Date();
            date.setDate(date.getDate() - i);
            const dateStr = utils.formatDate(date);
            const day = date.getDate();
            const isToday = i === 0;
            const checkedIn = !!checkInRecord[dateStr];

            recentDays.push({ dateStr, day, isToday, checkedIn });
        }

        this.setData({ recentCheckinDays: recentDays });
    },

    // 选择头像（更换头像）
    chooseAvatar() {
        const that = this;
        // wx.chooseImage({
        //     count: 1,
        //     sizeType: ['original', 'compressed'],
        //     sourceType: ['album', 'camera'],
        //     success: (res) => {
        //         const tempFilePath = res.tempFilePaths[0];
        //         // 模拟上传头像（实际需对接后端）
        //         wx.showLoading({ title: '上传中...' });
        //         setTimeout(() => {
        //             // 更新全局用户头像
        //             globalData.userInfo.avatarUrl = tempFilePath;
        //             that.setData({ userInfo: globalData.userInfo });
        //             wx.hideLoading();
        //             wx.showToast({ title: '头像更换成功' });
        //         }, 1000);
        //     }
        // }
    }
});
